package com.silence.gmall.item.feign;

import com.silence.gmall.base.Result;
import com.silence.gmall.product.dto.SkuInfoDto;
import com.silence.gmall.product.dto.SpuSaleAttrDto;
import com.silence.gmall.web.dto.CategoryViewDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;

/**
 * @Author silence
 * @Date 2025-08-26 15:55
 * @Email 792245022@qq.com
 * @Version 1.0
 * @Description
 */
@Component
@FeignClient(name = "gmall-product", path = "/api/inner/product")
public interface SkuDetailFeignClient {

    @GetMapping("/skuInfo/{skuId}")
    Result<SkuInfoDto> getSkuInfo(@PathVariable("skuId") Long skuId);

    @GetMapping("/skuInfo/getCategoryView/{category3Id}")
    Result<CategoryViewDto> getCategoryView(@PathVariable("category3Id") String category3Id);

    @GetMapping("/skuInfo/price/{skuId}")
    Result<String> getSkuPrice(@PathVariable("skuId") Long skuId);

    @GetMapping("/skuInfo/getSpuSaleAttrAndValue/{spuId}/{skuId}")
    Result<List<SpuSaleAttrDto>> getSpuSaleAttrAndValue(@PathVariable("spuId") Long spuId, @PathVariable("skuId") Long skuId);

    @GetMapping("/skuInfo/getSpuValuesSkuJson/{spuId}")
    Result<String> getSpuValuesSkuJson(@PathVariable("spuId") Long spuId);
}
